function extractPptxText(pptxFile) {
    return new Promise(async (resolve, reject) => {
        try {
            const zip = await JSZip.loadAsync(pptxFile);
            const slides = zip.folder('ppt/slides');
            
            // 验证文件结构
            if (!slides) {
                throw new Error('Invalid PPTX format: missing slides directory');
            }

            // 收集并排序幻灯片文件
            const slideFiles = [];
            slides.forEach((relativePath, file) => {
                if (!file.dir) {
                    const slideNum = parseInt(relativePath.match(/slide(\d+)\.xml$/i)?.[1], 10);
                    if (slideNum) slideFiles.push({ slideNum, file });
                }
            });

            slideFiles.sort((a, b) => a.slideNum - b.slideNum);

            // 处理每张幻灯片
            const result = [null]; // 索引 0 占位
            for (const { slideNum, file } of slideFiles) {
                try {
                    const xml = await file.async('text');
                    const doc = new DOMParser().parseFromString(xml, 'text/xml');
                    
                    // 提取所有文本节点（兼容不同命名空间）
                    const texts = Array.from(doc.querySelectorAll('a\\:t, t'))
                                    .map(t => t.textContent.trim())
                                    .filter(Boolean)
                                    .join(' ');
                    
                    result[slideNum] = texts;
                } catch (e) {
                    console.warn(`Slide ${slideNum} processing failed:`, e);
                    result[slideNum] = ''; // 保留占位
                }
            }

            resolve(result);
        } catch (e) {
            reject(e);
        }
    });
}


async function checkTokenApi(backend_domain_name, token){
    const formData = new URLSearchParams();
    formData.append('token', token);

    try {
        const response = await fetch(backend_domain_name + '/pptx_generates_mind_maps/check_token', {
            method: 'POST',
            body: formData,
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
            }
        })
        const data = await response.json();

        if (data.TF == 'T'){
            return data.username;
            // 验证成功要将用户名展示在页面上
        } else {
            console.log(data.message)
            // 验证失败要访问 front_end_domain_name + '/login_register_page'
            return null;
        }
    } catch {
        // 验证失败要访问 front_end_domain_name + '/login_register_page'
        return null;
    }
} 

async function getPptxGeneratesMindMapsApi(backend_domain_name, token, texts){
    console.log('pptx 内容', texts)

    if (!texts || texts.length === 0){
        return 'texts 不能为空'
    }
    const formData = new URLSearchParams();
    formData.append('texts', texts);
    formData.append('token', token);

    try {
        const response = await fetch(backend_domain_name + '/pptx_generates_mind_maps/get_pptx_mind_maps', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
            },
            body: formData,
        });
        
        const result = await response.json();
        if (result.TF === 'T') {
            console.log('思维导图', result.ai_output)
            return result.ai_output;
            // 后端返回的数据格式如下所示
            // {
            //     "children": [
            //       {
            //         "children": [
            //           {
            //             "children": [
            //               {
            //                 "children": [
            //                   {
            //                     "children": [
            //                       {
            //                         "children": null,
            //                         "id": "6",
            //                         "topic": "\u6b27\u51e0\u91cc\u5fb7\u51e0\u4f55\u5b66\u516c\u7406"
            //                       },
            //                       {
            //                         "children": null,
            //                         "id": "7",
            //                         "topic": "\u79d1\u5b66\u4f53\u7cfb\u6784\u5efa\u57fa\u7840\u516c\u7406"
            //                       },
            //                       {
            //                         "children": [
            //                           {
            //                             "children": null,
            //                             "id": "9",
            //                             "topic": "Allen Newell & Herbert Simon"
            //                           },
            //                           {
            //                             "children": [
            //                               {
            //                                 "children": null,
            //                                 "id": "11",
            //                                 "topic": "\u6781\u5c0f-\u6781\u5927\u7b97\u6cd5"
            //                               },
            //                               {
            //                                 "children": null,
            //                                 "id": "12",
            //                                 "topic": "alpha-beta\u526a\u679d\u7b97\u6cd5"
            //                               }
            //                             ],
            //                             "id": "10",
            //                             "topic": "\u5b9a\u7406\u8bc1\u660e\u4e0e\u4eba\u673a\u5bf9\u5f08"
            //                           }
            //                         ],
            //                         "id": "8",
            //                         "topic": "\u4eba\u5de5\u667a\u80fd\u5148\u9a71\u8005"
            //                       }
            //                     ],
            //                     "id": "5",
            //                     "topic": "\u903b\u8f91\u63a8\u7406\u4e0e\u5b9a\u7406\u8bc1\u660e"
            //                   },
            //                   {
            //                     "children": [
            //                       {
            //                         "children": null,
            //                         "id": "14",
            //                         "topic": "\u7ecf\u9a8c\u77e5\u8bc6\u4e0e\u4ea7\u751f\u5f0f\u89c4\u5219"
            //                       },
            //                       {
            //                         "children": [
            //                           {
            //                             "children": null,
            //                             "id": "16",
            //                             "topic": "Edward Feigenbaum"
            //                           }
            //                         ],
            //                         "id": "15",
            //                         "topic": "DENDRAL\u4e13\u5bb6\u7cfb\u7edf"
            //                       }
            //                     ],
            //                     "id": "13",
            //                     "topic": "\u7b26\u53f7\u903b\u8f91\u4e0e\u4e13\u5bb6\u7cfb\u7edf"
            //                   },
            //                   {
            //                     "children": [
            //                       {
            //                         "children": null,
            //                         "id": "18",
            //                         "topic": "\u5b9e\u4f53\u4e0e\u5173\u7cfb\u8868\u793a"
            //                       },
            //                       {
            //                         "children": null,
            //                         "id": "19",
            //                         "topic": "\u77e5\u8bc6\u56fe\u8c31\u67e5\u8be2\u5e94\u7528"
            //                       }
            //                     ],
            //                     "id": "17",
            //                     "topic": "\u8bed\u4e49\u7f51\u7edc\u4e0e\u77e5\u8bc6\u56fe\u8c31"
            //                   }
            //                 ],
            //                 "id": "4",
            //                 "topic": "\u7b26\u53f7\u903b\u8f91"
            //               }
            //             ],
            //             "id": "3",
            //             "topic": "AI \u7684\u8303\u7574"
            //           }
            //         ],
            //         "id": "2",
            //         "topic": "01 \u7b26\u53f7\u903b\u8f91"
            //       },
            //       {
            //         "children": [
            //           {
            //             "children": [
            //               {
            //                 "children": null,
            //                 "id": "22",
            //                 "topic": "\u77e5\u8bc6\u704c\u8f93\u65b9\u6cd5\u7f3a\u9677"
            //               }
            //             ],
            //             "id": "21",
            //             "topic": "\u65e9\u671f AI \u5c40\u9650\u6027"
            //           },
            //           {
            //             "children": [
            //               {
            //                 "children": [
            //                   {
            //                     "children": null,
            //                     "id": "25",
            //                     "topic": "Cranmer\u7b49\u4eba\u7814\u7a76\u6848\u4f8b"
            //                   }
            //                 ],
            //                 "id": "24",
            //                 "topic": "\u4ece\u6570\u636e\u4e2d\u5b66\u4e60\u89c4\u5f8b"
            //               },
            //               {
            //                 "children": [
            //                   {
            //                     "children": null,
            //                     "id": "27",
            //                     "topic": "\u4e9a\u745f\u00b7\u585e\u7f2a\u5c14\u4e0e\u8df3\u68cb\u5b9e\u9a8c"
            //                   }
            //                 ],
            //                 "id": "26",
            //                 "topic": "\u673a\u5668\u5b66\u4e60\u5960\u57fa\u4eba"
            //               },
            //               {
            //                 "children": [
            //                   {
            //                     "children": null,
            //                     "id": "29",
            //                     "topic": "\u8d1d\u53f6\u65af\u7f51\u7edc\u4e0e\u795e\u7ecf\u7f51\u7edc"
            //                   }
            //                 ],
            //                 "id": "28",
            //                 "topic": "\u7b97\u6cd5\u53d1\u5c55"
            //               }
            //             ],
            //             "id": "23",
            //             "topic": "\u673a\u5668\u5b66\u4e60\u57fa\u7840"
            //           },
            //           {
            //             "children": [
            //               {
            //                 "children": [
            //                   {
            //                     "children": null,
            //                     "id": "32",
            //                     "topic": "\u989c\u8272\u4e0e\u91cd\u91cf\u7279\u5f81"
            //                   }
            //                 ],
            //                 "id": "31",
            //                 "topic": "\u7279\u5f81\u63d0\u53d6\u4e0e\u6a21\u578b\u8bbe\u8ba1"
            //               },
            //               {
            //                 "children": [
            //                   {
            //                     "children": null,
            //                     "id": "34",
            //                     "topic": "\u68af\u5ea6\u4e0b\u964d\u4f18\u5316\u7b97\u6cd5"
            //                   }
            //                 ],
            //                 "id": "33",
            //                 "topic": "\u5b66\u4e60\u8fc7\u7a0b\u4e0e\u5206\u7c7b\u9762"
            //               }
            //             ],
            //             "id": "30",
            //             "topic": "\u673a\u5668\u5b66\u4e60\u793a\u4f8b\uff1a\u82f9\u679c\u4e0e\u6854\u5b50\u5206\u7c7b"
            //           },
            //           {
            //             "children": [
            //               {
            //                 "children": null,
            //                 "id": "36",
            //                 "topic": "\u7a81\u7834\u4eba\u7c7b\u77e5\u8bc6\u4e0a\u9650"
            //               }
            //             ],
            //             "id": "35",
            //             "topic": "\u673a\u5668\u5b66\u4e60\u4f18\u52bf"
            //           },
            //           {
            //             "children": [
            //               {
            //                 "children": [
            //                   {
            //                     "children": null,
            //                     "id": "39",
            //                     "topic": "\u7279\u5f81\u9009\u62e9\u4e0e\u6a21\u578b\u7ed3\u6784"
            //                   },
            //                   {
            //                     "children": [
            //                       {
            //                         "children": null,
            //                         "id": "41",
            //                         "topic": "\u6570\u636e\u683c\u5f0f\u4e0e\u8ba1\u7b97\u5f00\u9500"
            //                       }
            //                     ],
            //                     "id": "40",
            //                     "topic": "\u6a21\u578b\u8bbe\u8ba1\u539f\u5219"
            //                   }
            //                 ],
            //                 "id": "38",
            //                 "topic": "\u6a21\u578b\u8bbe\u8ba1"
            //               },
            //               {
            //                 "children": [
            //                   {
            //                     "children": null,
            //                     "id": "43",
            //                     "topic": "\u76ee\u6807\u51fd\u6570\u4e0e\u68af\u5ea6\u4e0b\u964d"
            //                   }
            //                 ],
            //                 "id": "42",
            //                 "topic": "\u6a21\u578b\u8bad\u7ec3"
            //               },
            //               {
            //                 "children": [
            //                   {
            //                     "children": null,
            //                     "id": "45",
            //                     "topic": "\u8fc7\u62df\u5408\u95ee\u9898"
            //                   }
            //                 ],
            //                 "id": "44",
            //                 "topic": "\u6a21\u578b\u6d4b\u8bd5"
            //               },
            //               {
            //                 "children": [
            //                   {
            //                     "children": null,
            //                     "id": "47",
            //                     "topic": "\u6ca1\u6709\u514d\u8d39\u7684\u5348\u9910\u5b9a\u7406"
            //                   },
            //                   {
            //                     "children": [
            //                       {
            //                         "children": null,
            //                         "id": "49",
            //                         "topic": "\u6a21\u578b\u590d\u6742\u5ea6\u4e0e\u7b80\u5355\u6027"
            //                       }
            //                     ],
            //                     "id": "48",
            //                     "topic": "\u5965\u5361\u59c6\u5243\u5200\u51c6\u5219"
            //                   }
            //                 ],
            //                 "id": "46",
            //                 "topic": "\u6a21\u578b\u9009\u62e9"
            //               }
            //             ],
            //             "id": "37",
            //             "topic": "\u673a\u5668\u5b66\u4e60\u57fa\u672c\u6d41\u7a0b"
            //           },
            //           {
            //             "children": [
            //               {
            //                 "children": [
            //                   {
            //                     "children": null,
            //                     "id": "52",
            //                     "topic": "\u5206\u7c7b\u4efb\u52a1"
            //                   },
            //                   {
            //                     "children": null,
            //                     "id": "53",
            //                     "topic": "\u56de\u5f52\u4efb\u52a1"
            //                   }
            //                 ],
            //                 "id": "51",
            //                 "topic": "\u76d1\u7763\u5b66\u4e60"
            //               },
            //               {
            //                 "children": [
            //                   {
            //                     "children": null,
            //                     "id": "55",
            //                     "topic": "\u805a\u7c7b\u4e0e\u6d41\u5f62\u5b66\u4e60"
            //                   }
            //                 ],
            //                 "id": "54",
            //                 "topic": "\u65e0\u76d1\u7763\u5b66\u4e60"
            //               },
            //               {
            //                 "children": [
            //                   {
            //                     "children": [
            //                       {
            //                         "children": null,
            //                         "id": "58",
            //                         "topic": "\u5f3a\u5316\u5b66\u4e60\u5e94\u7528\u573a\u666f"
            //                       }
            //                     ],
            //                     "id": "57",
            //                     "topic": "\u5956\u52b1\u4fe1\u53f7\u4e0e\u7b56\u7565\u4f18\u5316"
            //                   }
            //                 ],
            //                 "id": "56",
            //                 "topic": "\u5f3a\u5316\u5b66\u4e60"
            //               }
            //             ],
            //             "id": "50",
            //             "topic": "\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\u5206\u7c7b"
            //           }
            //         ],
            //         "id": "20",
            //         "topic": "02 \u673a\u5668\u5b66\u4e60"
            //       }
            //     ],
            //     "id": "1",
            //     "topic": "\u4eba\u5de5\u667a\u80fd\u6982\u8bba AI \u6559\u5b66\u90e8\uff1a\u738b\u98de\u5e06"
            //   }
              
        } else {
            return result.message;
        }
    } catch {
        return '上传失败';
    }
}